home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
001
/
xmodem.arc
/
RET.MAC
< prev
next >
Wrap
Text File
|
1985-06-15
|
2KB
|
122 lines
; ***********************************************
; RET_HL C-to-Machine interface.
; Call from C as:
;
; ret_hl( addr, a, bc, de, hl )
; unsigned addr, bc, de, hl;
; char a;
;
; Returns value in HL after machine call.
.Z80
CSEG
RET?HL::
ADD HL,SP ; required for C
PUSH HL ; required for C
LD HL,4 ; access parameters,
ADD HL,SP ; starting w/ addr
LD DE,EXIT1 ; Setup return addr
PUSH DE
; ADDR
LD E,(HL)
INC HL
LD D,(HL)
INC HL
PUSH DE
; A
LD D,(HL)
INC HL
INC HL
PUSH DE
; BC
LD E,(HL)
INC HL
LD D,(HL)
INC HL
PUSH DE
; DE
LD E,(HL)
INC HL
LD D,(HL)
INC HL
PUSH DE
; HL
LD E,(HL)
INC HL
LD D,(HL)
EX DE,HL
;
POP DE ; Load DE
POP BC ; Load BC
POP AF ; Load AF
;
RET ; Jump to ADDR
EXIT1:
JP $RTNI## ; Returns value in HL
;
; ***********************************************
; RET_A C-to-Machine interface.
; Call from C as:
;
; ret_A( addr, a, bc, de, hl )
; unsigned addr, bc, de, hl;
; char a;
;
; Returns value in A after machine call.
.Z80
CSEG
RET?A::
ADD HL,SP ; required for C
PUSH HL ; required for C
LD HL,4 ; access parameters,
ADD HL,SP ; starting w/ addr
LD DE,EXIT2 ; Setup return addr
PUSH DE
; ADDR
LD E,(HL)
INC HL
LD D,(HL)
INC HL
PUSH DE
; A
LD D,(HL)
INC HL
INC HL
PUSH DE
; BC
LD E,(HL)
INC HL
LD D,(HL)
INC HL
PUSH DE
; DE
LD E,(HL)
INC HL
LD D,(HL)
INC HL
PUSH DE
; HL
LD E,(HL)
INC HL
LD D,(HL)
EX DE,HL
;
POP DE ; Load DE
POP BC ; Load BC
POP AF ; Load AF
;
RET ; Jump to ADDR
EXIT2:
LD L,A ; transer
LD H,0
JP $RTNI## ; Returns value in HL
END
POP AF ; Load AF
;
RET ; Jump to ADDR
EXIT2:
LD L,A ; transer
LD H,0
JP $RTNI## ;